// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ui/ozone/platform/drm/gpu/drm_window_proxy.h"

#include "ui/ozone/platform/drm/gpu/drm_thread.h"
#include "ui/ozone/platform/drm/gpu/overlay_plane.h"
#include "ui/ozone/platform/drm/gpu/proxy_helpers.h"
#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"

namespace ui {

DrmWindowProxy::DrmWindowProxy(gfx::AcceleratedWidget widget,
    DrmThread* drm_thread)
    : widget_(widget)
    , drm_thread_(drm_thread)
{
}

DrmWindowProxy::~DrmWindowProxy() { }

void DrmWindowProxy::SchedulePageFlip(const std::vector<OverlayPlane>& planes,
    const SwapCompletionCallback& callback)
{
    drm_thread_->task_runner()->PostTask(
        FROM_HERE,
        base::Bind(&DrmThread::SchedulePageFlip, base::Unretained(drm_thread_),
            widget_, planes, CreateSafeCallback(callback)));
}

void DrmWindowProxy::GetVSyncParameters(
    const gfx::VSyncProvider::UpdateVSyncCallback& callback)
{
    drm_thread_->task_runner()->PostTask(
        FROM_HERE,
        base::Bind(&DrmThread::GetVSyncParameters, base::Unretained(drm_thread_),
            widget_, CreateSafeCallback(callback)));
}

} // namespace ui
